package cn.webwheel.tutorials.template;

import cn.webwheel.template.RenderException;
import cn.webwheel.template.RenderExceptionAware;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

// 模板组件类
// 并可选的实现了cn.webwheel.template.RenderExceptionAware接口，以此来处理模板上表达式执行出错时的情况
public class IndexPage implements RenderExceptionAware {

    private Date date;

    // 通过Action传入的时间
    public IndexPage(Date date) {
        this.date = date;
    }

    // 获取日期的字符串表示，将作为动态内容输出到页面之上
    public String getDate() {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
        return sdf.format(date);
    }

    // 返回一个集合到页面上以循环渲染，当返回值类型继承自java.lang.Iterable或者java.util.Iterator时可使用循环渲染（必须泛型化）
    public List<String> getStrs() {
        List<String> list = new ArrayList<String>();
        list.add("第一个字符串");
        list.add("WebWheel");
        list.add("好用么？");
        return list;
    }

    // 翻转字符串函数，可被页面表达式调用
    public String revert(String s) {
        StringBuilder sb = new StringBuilder(s.length());
        for (int i = s.length() - 1; i >= 0; i--) {
            sb.append(s.charAt(i));
        }
        return sb.toString();
    }

    // 当页面模板表达式求值出错时（异常发生），此方法将被调用
    public void renderError(RenderException e) {
    }
}
